x86/MCE: mctelem_init() cleanup
authorJan Beulich <jbeulich@suse.com>
Mon, 10 Mar 2014 10:12:30 +0000 (11:12 +0100)
committerJan Beulich <jbeulich@suse.com>
Mon, 10 Mar 2014 10:12:30 +0000 (11:12 +0100)
The function can be __init with its caller taking care of only calling
it on the BSP. And with that all its static variables can be dropped.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
Reviewed-by: Andrew Cooper <andrew.cooper@citrix.com>
Reviewed-by: Liu Jinsong <jinsong.liu@intel.com>
xen/arch/x86/cpu/mcheck/mce.c
xen/arch/x86/cpu/mcheck/mctelem.c
xen/arch/x86/cpu/mcheck/mctelem.h

index af6f0bea06308fc48543e2bc05b5781c82977bf3..a81952c831f0813f3f12e8ae852ae84ac1e3497f 100644 (file)
@@ -775,13 +775,15 @@ void mcheck_init(struct cpuinfo_x86 *c, bool_t bsp)
 
     intpose_init();
 
-    mctelem_init(sizeof(struct mc_info));
+    if ( bsp )
+    {
+        mctelem_init(sizeof(struct mc_info));
+        register_cpu_notifier(&cpu_nfb);
+    }
 
     /* Turn on MCE now */
     set_in_cr4(X86_CR4_MCE);
 
-    if ( bsp )
-        register_cpu_notifier(&cpu_nfb);
     set_poll_bankmask(c);
 
     return;
index ed8e8d20b7cbc300d2961a5a08f9bd4521ae053a..b8da46538f25b8c7907e3ebb23d60f4cd7cb8a2b 100644 (file)
@@ -248,25 +248,14 @@ static void mctelem_processing_release(struct mctelem_ent *tep)
        }
 }
 
-void mctelem_init(int reqdatasz)
+void __init mctelem_init(unsigned int datasz)
 {
-       static int called = 0;
-       static int datasz = 0, realdatasz = 0;
        char *datarr;
-       int i;
+       unsigned int i;
        
-       BUG_ON(MC_URGENT != 0 || MC_NONURGENT != 1 || MC_NCLASSES != 2);
-
-       /* Called from mcheck_init for all processors; initialize for the
-        * first call only (no race here since the boot cpu completes
-        * init before others start up). */
-       if (++called == 1) {
-               realdatasz = reqdatasz;
-               datasz = (reqdatasz & ~0xf) + 0x10;     /* 16 byte roundup */
-       } else {
-               BUG_ON(reqdatasz != realdatasz);
-               return;
-       }
+       BUILD_BUG_ON(MC_URGENT != 0 || MC_NONURGENT != 1 || MC_NCLASSES != 2);
+
+       datasz = (datasz & ~0xf) + 0x10;        /* 16 byte roundup */
 
        if ((mctctl.mctc_elems = xmalloc_array(struct mctelem_ent,
            MC_NENT)) == NULL ||
index e5514d98918f2b5e9b5cbc45fa11af7544f02ebb..4947b575a70b0494080514714ba43e271f965bfb 100644 (file)
@@ -59,7 +59,7 @@ typedef enum mctelem_class {
        MC_NONURGENT
 } mctelem_class_t;
 
-extern void mctelem_init(int);
+extern void mctelem_init(unsigned int);
 extern mctelem_cookie_t mctelem_reserve(mctelem_class_t);
 extern void *mctelem_dataptr(mctelem_cookie_t);
 extern void mctelem_commit(mctelem_cookie_t);